When searching for documents on a certain topic, a user may not be aware of certain key words that are used in the domain which could complement the query. For example, a user may generate a query including “browser” in the query, but the user may not be aware that many of the documents in the document database only refer to “browser” as “NETSCAPE” or “MOZILLA”. Thus, the results of the search may be substantially incomplete. To get a more complete query, the user would need to replace the term “browser” with the expression “(browser or MOZILLA or NETSCAPE)”. The difficulty is for the user to recognize or learn that “MOZILLA” or “NETSCAPE” is a commonly used term related to “browser” in the search space.
Some conventional search interfaces include a capability to expand a single input query term to a list of known synonyms. For example, if the user's query contains “sofa”, then the search interface may automatically expand the query to “(sofa or couch or settee or CHESTERFIELD or DAVENPORT)”. To achieve this functionality, the search software requires a database of related words, which is composed by human editors. However, the related words must be discovered, which may be a manual, expensive process. The discovery process is compounded by the fact that word or phrase usage is specialized in many different technical domains.